//
//  QQNetworkChannelDelegate.h
//  QQNetworkEngine
//
//  Created by elvisgao on 2019/12/4.
//  Copyright © 2018 tencent. All rights reserved.
//

#import <Foundation/Foundation.h>

@protocol QQNetworkObjectProtocol; // 打破循环依赖
@class QQOTSpan;

NS_ASSUME_NONNULL_BEGIN

@protocol QQNetworkChannelDelegate <NSObject>

/// 发送通道的发送/接受接口
/// @param request 原始请求实例。一般用来给Channel提供请求信息
/// @param reqData 发送数据。经过QQNetworkCodecDelegate编码过的请求数据
/// @param contextID 通道返回的原始请求标记id。
/// @param parentSpan 上报天机阁（OpenTelemetry）trace追踪时的父span。如果是nil，建议使用request.span
/// @param completionHandler 通道回包时的回调。
- (BOOL)sendRequest:(id<QQNetworkObjectProtocol>)request
        withReqData:(NSData *)reqData
          contextID:(int64_t *)contextID
         parentSpan:(nullable QQOTSpan *)parentSpan
  completionHandler:(void (^)(NSData * _Nullable rspData, NSError * _Nullable error))completionHandler;

@optional
// engine默认是10
- (NSInteger)maxConcurrentCount;

@end

NS_ASSUME_NONNULL_END
